//
//  hook_ptrace.m
//  ptrace_jun
//
//  Created by jun on 2020/12/11.
//

#import "hook_ptrace.h"
#import "fishhook.h"
#import "ptrace__jun.h"

@implementation hook_ptrace

//定义指针，保存原来的函数地址
int(*ptrace_p)(int _request,pid_t _pid,caddr_t _addr,int _data);

//自定义的ptrace
int jun_ptrace (int _request,pid_t _pid,caddr_t _addr,int _data){
    if (_request != PT_DENY_ATTACH) {
        //如果不是拒绝附加
        return ptrace_p(_request, _pid, _addr, _data);
    }else{
        //如果是拒绝附加，就直接return 不执行。
        return 0;
    }
}

//+(void)load{
//    //fish_hook
//    struct rebinding ptraceBd;
//    ptraceBd.name = "ptrace";
//    ptraceBd.replacement = jun_ptrace;//新函数的地址
//    ptraceBd.replaced = (void *)&ptrace_p;//保留原始的函数地址
//    
//    struct rebinding binds[] = {ptraceBd};
//    rebind_symbols(binds, 1);//数组，长度为1
//}

@end
